package com.leetcode.August;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 46. 全排列
 * @Author: Mr.Fxy
 * @CreateTime: 2024-09-07 13:19
 */
public class LC46全排列 {
    public static List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        backtrack(res, new ArrayList<>(), nums);
        return res;
    }
    private static void backtrack(List<List<Integer>> res, List<Integer> temp, int[] nums) {
        if (temp.size()==nums.length) {
            res.add(temp);
        }else {
            for (int num : nums) {
                if (temp.contains(num)) continue;
                temp.add(num);
                backtrack(res, temp, nums);
                temp.remove(temp.size()-1);//撤销上一步的选择，以便在下次循环尝试其他的元素
            }
        }
    }
}
